package Extends.ExtendsText001;

/**
 * ClassName:Cat
 * Package:Extends.ExtendsText001
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/1/19-16:08
 * @Version:v1.0
 */
public class Cat extends Animal {
    public void catchMouse() {
        System.out.println("猫在抓老鼠");
    }
    /*
     * 方法的重写：当父类的方法不能满足子类现在的需求时,需要进行方法重写
     * 书写格式
     * 在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法*/

    //应用场景：当父类中方法,不能满足子类现在的需求时,我们就需要把这个方法进行重写
    //注意：子类中重写的方法上面需要加上@Override
    @Override
    public void eat() {
        System.out.println("吃东西");
    }
    @Override
    public void drink() {
        System.out.println("喝水");
    }
}


//虚方法表(非private,非static,非final)---可以调用

//方法重写注意事项和要求0
//1.重写方法的名称,形参列表必须与父类中的一致
//2.子类重写父类方法时,访问权限子类必须大于等于父类(空着不写<protected<public)
//3.子类重写父类方法时,返回值类型子类必须小于等于父类
//4.只有被添加到虚方法表中的方法才能被重写
//(重写的方法尽量和父类保持一致)


/*
* 方法重写的本质：覆盖虚方法表中的方法*/